function shuffle(arr) {
  var len = arr.length;
  for (var i = 0; i < len; i++) {
    // 生成 0 到 i 之间的随机整数
    var index = Math.floor(Math.random() * (i + 1));
    // 使用 ES6 中的解构赋值完成两个变量值的交换
    [arr[i], arr[index]] = [arr[index], arr[i]];
  }
  return arr;
}

// 洗牌原理，该算法需要遍历整个数组，当遍历到第 i（i 为数组元素的索引）个元素时，
// 从 0 到 i 随机挑选出一个数字，记为 index，
// 然后对索引为 i 和 index 的数组元素进行互换，直至遍历结束。

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log('Shuffled arr: ', shuffle(arr));

// 数组乱序（随机排序）
arr.sort(function (a, b) {
  return Math.random() - 0.5;
});
console.log(arr);